package com.cskaoyan.javase.oop3._2inner._2static._0introduction;

/**
 * 静态内部类的语法
 * 首先它仍然声明在外围类的成员位置,和成员内部类相比,多了一个static关键字
 * //外围（普通）类
 * [访问权限修饰符] class EnclosedClazz{
 * // 静态内部类访问权限修饰符，有四个，和普通成员一样
 *   [访问权限修饰符] static class NestedClazz{
 *  }
 * }
 * 依然主要从以下几个角度分析：
 * 1.访问权限修饰符,仍然有四种.
 * 2.成员特点
 *      静态内部类就是一个普通类
 *      之所以进入外围类的内部
 *      是为了使用外围类保护和隐藏自己
 *      所以 静态内部类的成员特点和普通类 完全一样 ,没有任何区别
 *
 * 3.继承和实现
 *      可以继承,可以实现
 *      尤其注意 如果继承内部类时,该内部类必须是静态内部类
 *
 * @since 16:49
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
}

class EnclosedClazz {
    // 成员内部类
    class A {

    }

    static class B {
    }

    // 静态内部类
    static class Inner extends B {
        int a;
        private int b = 10;
        static int c = 20;
        static final int D = 30;

        public void testNested() {
        }

        public static void testStaticNested() {
        }

        public Inner(int a, int b) {
            this.a = a;
            this.b = b;
        }

        {
        }

        static {

        }
    }
}